BEGAD:      EQU    08200H
            ORG    BEGAD-7
            DEFB   0FEH
            DEFW   START,EINDE,START

START:      JP     INITMUSDAT
            JP     REPLAYROUT
            JP     INITDRMFRQ
            JP     ALMUSICOFF
            JP     REPINTERRU
            JP     VOORRECORD

;----------------------------------------------------------------------------
            DEFB   0,0,0,0,0   ;Psg1
            DEFB   0,0,0,0,0   ;Psg2
            DEFB   0,0,0,0,0   ;Psg3
            DEFB   0,0,0,0,0   ;Drum
            DEFB   0,0,0,0,0   ;Instrument-0
            DEFB   0,0,0,0,0   ;Fm1
            DEFB   0,0,0,0,0   ;Fm2
            DEFB   0,0,0,0,0   ;Fm3
            DEFB   0,0,0,0,0   ;Fm4
            DEFB   0,0,0,0,0   ;Fm5
            DEFB   0,0,0,0,0   ;Fm6
            DEFB   0,0,0,0,0   ;Fm7
            DEFB   0,0,0,0,0   ;Fm8
            DEFB   0,0,0,0,0   ;Fm9

            ;Dit zijn 5 bytes (variabelen) per kanaal die alleen
            ;intern door bepaalde routines worden gebruikt.

;----------------------------------------------------------------------------

REPMUSMODE: DEFB   0               ; 0=Geen drums, 1=wel drums (6 FM voices)
REPDRUMFRQ: DEFB   100,100,100     ; Frequenties van drums
REPSPEED:   DEFB   10              ; Speed van muziek
REPLASTLIN: DEFW   63              ; Laatste step
REPNEWLINE: DEFW   0               ; Eerste stepnr. voor herhaling
REPHERHAAL: DEFB   1               ; herhaal muziek of niet
REPSTARTIN: DEFB   0               ; Start Instrument-0

;----------------------------------------------------------------------------

REPMUSDATA: DEFB   0,0,0,0,0   ;Psg1
            DEFB   0,0,0,0,0   ;Psg2
            DEFB   0,0,0,0,0   ;Psg3
            DEFB   0,0,0,0,0   ;Drum
            DEFB   0,0,0,0,0   ;Instrument-0
            DEFB   0,0,0,0,0   ;Fm1
            DEFB   0,0,0,0,0   ;Fm2
            DEFB   0,0,0,0,0   ;Fm3
            DEFB   0,0,0,0,0   ;Fm4
            DEFB   0,0,0,0,0   ;Fm5
            DEFB   0,0,0,0,0   ;Fm6
            DEFB   0,0,0,0,0   ;Fm7
            DEFB   0,0,0,0,0   ;Fm8
            DEFB   0,0,0,0,0   ;Fm9

            ; Dit datablok bevat per muziekkanaal de volgende data:

            ; 1e byte   : betreffende track staat aan (1) of uit (0)
            ; 2e byte   : dit is een counter
            ; 3e byte   : dit is de memorymap waar de data van de track staat.
            ; 4e/5e byte: RAM adres van muziekdata. Dit adres wordt met 4
            ;             verhoogd, nadat de counter 0 is geworden.
;-----------------------------------------------------------------------------

REPVARDATA: DEFB   0,0,0,0,0   ;Psg1
            DEFB   0,0,0,0,0   ;Psg2
            DEFB   0,0,0,0,0   ;Psg3
            DEFB   0,0,0,0,0   ;Drum
            DEFB   0,0,0,0,0   ;Instrument-0
            DEFB   0,0,0,0,0   ;Fm1
            DEFB   0,0,0,0,0   ;Fm2
            DEFB   0,0,0,0,0   ;Fm3
            DEFB   0,0,0,0,0   ;Fm4
            DEFB   0,0,0,0,0   ;Fm5
            DEFB   0,0,0,0,0   ;Fm6
            DEFB   0,0,0,0,0   ;Fm7
            DEFB   0,0,0,0,0   ;Fm8
            DEFB   0,0,0,0,0   ;Fm9

RUISFREQ:   DEFB   0

            ; Deze data wordt gebruikt voor het opslaan van effect-adressen
            ; en momentele registerinhouden van de OPLL/PSG chip.

            ; 1e/2e byte: het momentele adres van een effect-programma.
            ; 3e byte   : voor opslaan van een octave/grove toon-register.
            ; 4e byte   : voor opslaan van fijne toon-register.
            ; 5e byte   : voor opslaan van een volume/instrument-register.

;----------------------------------------------------------------------------

;De volgende adressen wijzen elk naar een effect van de PSG

PSGEFFECTS: DEFW   EFFECT0
            DEFW   EFFPSG1
            DEFW   EFFPSG2
            DEFW   EFFPSG3
            DEFW   EFFPSG4
            DEFW   EFFPSG5
            DEFW   EFFPSG6
            DEFW   EFFPSG7
            DEFW   EFFPSG8
            DEFW   EFFPSG9
            DEFW   EFFPSG10
            DEFW   EFFPSG11
            DEFW   EFFPSG12
            DEFW   EFFPSG13
            DEFW   EFFPSG14
            DEFW   EFFPSG15
            DEFW   EFFPSG16
            DEFW   EFFPSG17
            DEFW   EFFPSG18
            DEFW   EFFPSG19
            DEFW   EFFPSG20
            DEFW   EFFPSG21
            DEFW   EFFPSG22
            DEFW   EFFPSG23
            DEFW   EFFPSG24
            DEFW   EFFPSG25
            DEFW   EFFPSG26
            DEFW   EFFPSG27
            DEFW   EFFPSG28
            DEFW   EFFPSG29
            DEFW   EFFPSG30
            DEFW   EFFPSG31
            DEFW   EFFPSG32
            DEFW   EFFPSG33
            DEFW   EFFPSG34
            DEFW   EFFPSG35
            DEFW   EFFPSG36
            DEFW   EFFPSG37
            DEFW   EFFPSG38
            DEFW   EFFPSG39
            DEFW   EFFPSG40
            DEFW   EFFPSG41
            DEFW   EFFPSG42
            DEFW   EFFPSG43
            DEFW   EFFPSG44
            DEFW   EFFPSG45
            DEFW   EFFPSG46
            DEFW   EFFPSG47
            DEFW   EFFPSG48
            DEFW   EFFPSG49
            DEFW   EFFPSG50
            DEFW   EFFPSG51
            DEFW   EFFPSG52
            DEFW   EFFPSG53
            DEFW   EFFPSG54
            DEFW   EFFPSG55
            DEFW   EFFPSG56
            DEFW   EFFPSG57
            DEFW   EFFPSG58
            DEFW   EFFPSG59
            DEFW   EFFPSG60
            DEFW   EFFPSG61
            DEFW   EFFPSG62
            DEFW   EFFPSG63
            DEFW   EFFPSG64
            DEFW   EFFPSG65
            DEFW   EFFPSG66
            DEFW   EFFPSG67
            DEFW   EFFPSG68
            DEFW   EFFPSG69
            DEFW   EFFPSG70
            DEFW   EFFPSG71
            DEFW   EFFPSG72
            DEFW   EFFPSG73
            DEFW   EFFPSG74
            DEFW   EFFPSG75
            DEFW   EFFPSG76
            DEFW   EFFPSG77
            DEFW   EFFPSG78
            DEFW   EFFPSG79
            DEFW   EFFPSG80
            DEFW   EFFPSG81

;De volgende adressen wijzen elk naar een effect van FM

FMPEFFECTS: DEFW   EFFECT0
            DEFW   EFFFM1
            DEFW   EFFFM2
            DEFW   EFFFM3
            DEFW   EFFFM4
            DEFW   EFFFM5
            DEFW   EFFFM6
            DEFW   EFFFM7
            DEFW   EFFFM8
            DEFW   EFFFM9
            DEFW   EFFFM10
            DEFW   EFFFM11
            DEFW   EFFFM12
            DEFW   EFFFM13
            DEFW   EFFFM14
            DEFW   EFFFM15
            DEFW   EFFFM16
            DEFW   EFFFM17
            DEFW   EFFFM18
            DEFW   EFFFM19
            DEFW   EFFFM20
            DEFW   EFFFM21
            DEFW   EFFFM22
            DEFW   EFFFM23
            DEFW   EFFFM24
            DEFW   EFFFM25
            DEFW   EFFFM26
            DEFW   EFFFM27
            DEFW   EFFFM28
            DEFW   EFFFM29
            DEFW   EFFFM30
            DEFW   EFFFM31
            DEFW   EFFFM32
            DEFW   EFFFM33
            DEFW   EFFFM34
            DEFW   EFFFM35
            DEFW   EFFFM36
            DEFW   EFFFM37
            DEFW   EFFFM38
            DEFW   EFFFM39
            DEFW   EFFFM40
            DEFW   EFFFM41
            DEFW   EFFFM42
            DEFW   EFFFM43
            DEFW   EFFFM44
            DEFW   EFFFM45
            DEFW   EFFFM46
            DEFW   EFFFM47
            DEFW   EFFFM48
            DEFW   EFFFM49
            DEFW   EFFFM50
            DEFW   EFFFM51
            DEFW   EFFFM52
            DEFW   EFFFM53
            DEFW   EFFFM54
            DEFW   EFFFM55
            DEFW   EFFFM56
            DEFW   EFFFM57
            DEFW   EFFFM58
            DEFW   EFFFM59
            DEFW   EFFFM60
            DEFW   EFFFM61
            DEFW   EFFFM62
            DEFW   EFFFM63
            DEFW   EFFFM64
            DEFW   EFFFM65
            DEFW   EFFFM66
            DEFW   EFFFM67
            DEFW   EFFFM68
            DEFW   EFFFM69
            DEFW   EFFFM70
            DEFW   EFFFM71
            DEFW   EFFFM72
            DEFW   EFFFM73
            DEFW   EFFFM74
            DEFW   EFFFM75
            DEFW   EFFFM76
            DEFW   EFFFM77
            DEFW   EFFFM78
            DEFW   EFFFM79
            DEFW   EFFFM80
            DEFW   EFFFM81

;----------------------------------------------------------------------------

REPMUSADR:  DEFW   0               ; Beginadres van muziek
REPACTSTEP: DEFW   0               ;actuele stepnr.
REPCOUNTER: DEFB   0               ;Counter van speed.
REPDECVOLU: DEFB   0               ;volumevermindering.

;----------------------------------------------------------------------------

VOORRECORD: PUSH   AF
            LD     L,A
            LD     H,0
            ADD    HL,HL
            ADD    HL,HL
            LD     DE,VOORRECORB
            ADD    HL,DE
            LD     E,(HL)
            INC    HL
            LD     D,(HL)
            PUSH   DE
            POP    IX
            INC    HL
            LD     E,(HL)
            INC    HL
            LD     D,(HL)
            POP    AF
            BIT    0,(IX+0)
            RET    Z
            CP     15
            RET    Z
            PUSH   BC
            PUSH   IX
            LD     IY,FMPEFFECTS
            CP     4
            JR     C,VOORRECPSG
            BIT    4,A
            JR     NZ,VOORRECFMP
            LD     IY,EFFDRUM
            JR     VOORRECORC
VOORRECPSG: LD     IY,PSGEFFECTS
VOORRECFMP: SLA    C
            LD     B,0
            ADD    IY,BC
            LD     C,(IY+0)
            LD     B,(IY+1)
            PUSH   BC
            POP    IY
VOORRECORC: PUSH   DE
            CALL   REPGOFORIT
            POP    DE
            CALL   REPGOFORIT
            PUSH   IY
            POP    DE
            LD     (IX+70),E
            LD     (IX+71),D
            POP    IX
            POP    BC
            LD     A,B
            OR     A
            RET    Z
            LD     A,(IX+2)
            OUT    (0FDH),A
            LD     E,(IX+3)
            LD     D,(IX+4)
            LD     HL,081FCH
            LD     BC,4
            LDIR
            RET

VOORRECORB: DEFW   0,0,REPMUSDATA,00008H,REPMUSDATA+5,00209H,REPMUSDATA+10,0040AH
            DEFW   REPMUSDATA+15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
            DEFW   REPMUSDATA+20,0,0,0,REPMUSDATA+25,01030H
            DEFW   REPMUSDATA+30,01131H,REPMUSDATA+35,01232H
            DEFW   REPMUSDATA+40,01333H,REPMUSDATA+45,01434H
            DEFW   REPMUSDATA+50,01535H,REPMUSDATA+55,01636H
            DEFW   REPMUSDATA+60,01737H,REPMUSDATA+65,01838H

VOORRECORG: DEFS   4

;----------------------------------------------------------------------------

; Deze routine moet altijd aan het begin worden aangeroepen om een muziek-
; stuk te initialiseren. Invoer: HL=eerste geheugenadres waar header van
; muziekstuk begint.

INITMUSDAT: LD     (REPMUSADR),HL
            LD     DE,REPMUSMODE
            LD     BC,81
            LDIR
            LD     A,1
            LD     (REPCOUNTER),A
            LD     HL,0
            LD     (REPACTSTEP),HL
            CALL   INITMUSDAZ
            LD     BC,0B807H
            CALL   WRTPSG
            LD     BC,00600H
INITMUSINC: XOR    A
            CALL   WRTPSG3
            INC    C
            DJNZ   INITMUSINC
            LD     IX,REPVARDATA+25
            LD     DE,5
            LD     A,(REPSTARTIN)
            RRC    A
            RRC    A
            RRC    A
            RRC    A
            XOR    15
            LD     BC,00930H
INITMUSINA: CALL   WRTOPLL3
            LD     (IX+4),A
            INC    C
            ADD    IX,DE
            DJNZ   INITMUSINA
            XOR    15
            AND    15
            LD     BC,00308H
            LD     IX,REPVARDATA
INITMUSINB: CALL   WRTPSG3
            LD     (IX+4),A
            INC    C
            ADD    IX,DE
            DJNZ   INITMUSINB
            LD     BC,0000EH
            CALL   WRTOPLL
            LD     A,(REPMUSMODE)
            OR     A
            RET    Z
            LD     IX,REPDRUMFRQ
            LD     L,(IX+0)
            LD     H,(IX+1)
            LD     E,(IX+2)
INITDRMFRQ: LD     D,016H
            LD     A,L
            CALL   INITDRMFRB
            INC    D
            LD     A,H
            CALL   INITDRMFRB
            INC    D
            LD     A,E
INITDRMFRB: PUSH   AF
            SLA    A
            SLA    A
            SLA    A
            LD     B,A
            LD     C,D
            CALL   WRTOPLL
            POP    AF
            SRL    A
            SRL    A
            SRL    A
            SRL    A
            AND    14
            OR     1
            LD     B,A
            LD     C,D
            SET    5,C
            RES    4,C
            JP     WRTOPLL

INITMUSDAZ: LD     HL,EFFECT0
            LD     (REPVARDATA),HL
            LD     (REPVARDATA+5),HL
            LD     (REPVARDATA+10),HL
            LD     (REPVARDATA+15),HL
            LD     (REPVARDATA+20),HL
            LD     (REPVARDATA+25),HL
            LD     (REPVARDATA+30),HL
            LD     (REPVARDATA+35),HL
            LD     (REPVARDATA+40),HL
            LD     (REPVARDATA+45),HL
            LD     (REPVARDATA+50),HL
            LD     (REPVARDATA+55),HL
            LD     (REPVARDATA+60),HL
            LD     (REPVARDATA+65),HL
            RET

;----------------------------------------------------------------------------

ALMUSICOFF: LD     BC,0B807H
            CALL   WRTPSG
            LD     C,0
            LD     D,6
ALMUSICOFB: LD     B,0
            CALL   WRTPSG
            INC    C
            DEC    D
            JR     NZ,ALMUSICOFB
            LD     IX,REPVARDATA+25
            LD     DE,5
            LD     H,9
            LD     C,020H
ALMUSICOFC: LD     B,(IX+2)
            SET    5,B
            CALL   WRTOPLL
            ADD    IX,DE
            INC    C
            DEC    H
            JR     NZ,ALMUSICOFC
            JP     INITMUSDAZ

;----------------------------------------------------------------------------

; Dit is het hoofdprogramma. Als het nog geen tijd is om een nieuwe toon in
; te stellen, dan wordt er altijd naar REPINTERRU gesprongen.
; Als dit wel het geval is (COUNTER=0) dan wordt er gekeken of het einde al
; bereikt is. Zoniet, dan wordt er naar REPNEWTOON gesprongen. Anders wordt
; er gekeken of het de bedoeling is dat het muziekstuk herhaald moet worden.
; Zoja dan wordt (REPACTSTEP) aangepast en wordt een stuk van de header van
; de muziek naar REPMUSDATA gekopieerd. Is dit niet het geval, dan wordt er
; niets gedaan (EINDE MUZIEK).

REPLAYROUT: LD     HL,REPCOUNTER
            DEC    (HL)
            JP     NZ,REPINTERRU
            LD     A,(REPSPEED)
            LD     (HL),A
            LD     HL,(REPACTSTEP)
            LD     DE,(REPLASTLIN)
            OR     A
            SBC    HL,DE
            JR     NZ,REPLAYB
            LD     A,(REPHERHAAL)
            OR     A
            JR     Z,REPLAYC
            LD     HL,(REPNEWLINE)
            LD     (REPACTSTEP),HL
            LD     HL,(REPMUSADR)
            LD     DE,81
            ADD    HL,DE
            LD     DE,REPMUSDATA
            LD     BC,70
            LDIR
            LD     A,1
            LD     (REPCOUNTER),A
            LD     A,128
            RET

REPLAYC:    LD     A,2
            RET

REPLAYB:    LD     HL,(REPACTSTEP)
            PUSH   HL
            INC    HL
            LD     (REPACTSTEP),HL
            CALL   REPNEWTOON
            POP    HL
            LD     A,1
            RET

;----------------------------------------------------------------------------

;Deze routine wordt om de "SPEED" interrupten aangeroepen om een eventuele
;nieuwe toon in te stellen.


REPNEWTOON: LD     BC,4
            LD     IX,REPMUSDATA    ;3 Psg kanalen
            CALL   REPINITPSG
            LD     IX,REPMUSDATA+5
            CALL   REPINITPSG
            LD     IX,REPMUSDATA+10
            CALL   REPINITPSG

            LD     IX,REPMUSDATA+15 ;Drum kanaal
            CALL   REPINITDRM

            LD     IX,REPMUSDATA+20 ;Instrument-0 kanaal
            CALL   REPINITIN0

            LD     IX,REPMUSDATA+25 ;9 Fm kanalen
            CALL   REPINITFMP
            LD     IX,REPMUSDATA+30
            CALL   REPINITFMP
            LD     IX,REPMUSDATA+35
            CALL   REPINITFMP
            LD     IX,REPMUSDATA+40
            CALL   REPINITFMP
            LD     IX,REPMUSDATA+45
            CALL   REPINITFMP
            LD     IX,REPMUSDATA+50
            CALL   REPINITFMP
            LD     IX,REPMUSDATA+55
            CALL   REPINITFMP
            LD     IX,REPMUSDATA+60
            CALL   REPINITFMP
            LD     IX,REPMUSDATA+65

REPINITFMP: BIT    0,(IX+0)
            RET    Z
            DEC    (IX+1)
            RET    NZ
            LD     A,(IX+2)
            OUT    (0FDH),A
            LD     L,(IX+3)
            LD     H,(IX+4)
            ADD    HL,BC
            LD     (IX+3),L
            LD     (IX+4),H
            LD     E,(HL)
            ADD    HL,BC
            DEC    HL
            LD     D,(HL)
            LD     (IX+1),D
            SLA    E
            RET    Z
            LD     D,0
            LD     HL,FMPEFFECTS
            ADD    HL,DE
            LD     E,(HL)
            INC    HL
            LD     D,(HL)
            LD     (IX+70),E
            LD     (IX+71),D
            RET

REPINITPSG: BIT    0,(IX+0)
            RET    Z
            DEC    (IX+1)
            RET    NZ
            LD     A,(IX+2)
            OUT    (0FDH),A
            LD     L,(IX+3)
            LD     H,(IX+4)
            ADD    HL,BC
            LD     (IX+3),L
            LD     (IX+4),H
            LD     E,(HL)
            ADD    HL,BC
            DEC    HL
            LD     D,(HL)
            LD     (IX+1),D
            SLA    E
            RET    Z
            LD     D,0
            LD     HL,PSGEFFECTS
            ADD    HL,DE
            LD     E,(HL)
            INC    HL
            LD     D,(HL)
            LD     (IX+70),E
            LD     (IX+71),D
            RET

REPINITDRM: BIT    0,(IX+0)
            RET    Z
            DEC    (IX+1)
            RET    NZ
            LD     A,(IX+2)
            OUT    (0FDH),A
            LD     L,(IX+3)
            LD     H,(IX+4)
            ADD    HL,BC
            LD     (IX+3),L
            LD     (IX+4),H
            ADD    HL,BC
            DEC    HL
            LD     A,(HL)
            LD     D,A
            AND    63
            LD     (IX+1),A
            BIT    6,D
            RET    Z
            LD     DE,EFFDRUM
            LD     (IX+70),E
            LD     (IX+71),D
            RET

REPINITIN0: BIT    0,(IX+0)
            RET    Z
            DEC    (IX+1)
            RET    NZ
            LD     A,(IX+2)
            OUT    (0FDH),A
            LD     L,(IX+3)
            LD     H,(IX+4)
            INC    HL
            INC    HL
            LD     (IX+3),L
            LD     (IX+4),H
            LD     A,(HL)
            INC    HL
            LD     D,(HL)
            LD     (IX+1),D
            OR     A
            RET    Z
            LD     DE,EFFINSTRU
            LD     (IX+70),E
            LD     (IX+71),D
            RET
;----------------------------------------------------------------------------

;Deze routine wordt elke interrupt aangeroepen.


REPINTERRU: LD     A,(REPMUSDATA)
            OR     A
            JR     Z,REPINTERR2
            LD     IX,REPMUSDATA
            LD     IY,(REPVARDATA)
            LD     DE,00008H
            CALL   REPGOFORIT
            LD     (REPVARDATA),IY
REPINTERR2: LD     A,(REPMUSDATA+5)
            OR     A
            JR     Z,REPINTERR3
            LD     IX,REPMUSDATA+5
            LD     IY,(REPVARDATA+5)
            LD     DE,00209H
            CALL   REPGOFORIT
            LD     (REPVARDATA+5),IY
REPINTERR3: LD     A,(REPMUSDATA+10)
            OR     A
            JR     Z,REPINTERR4
            LD     IX,REPMUSDATA+10
            LD     IY,(REPVARDATA+10)
            LD     DE,0040AH
            CALL   REPGOFORIT
            LD     (REPVARDATA+10),IY
REPINTERR4: LD     A,(REPMUSDATA+15)
            OR     A
            JR     Z,REPINTERR5
            LD     IX,REPMUSDATA+15
            LD     IY,(REPVARDATA+15)
            CALL   REPGOFORIT
            LD     (REPVARDATA+15),IY
REPINTERR5: LD     A,(REPMUSDATA+20)
            OR     A
            JR     Z,REPINTERR6
            LD     IX,REPMUSDATA+20
            LD     IY,(REPVARDATA+20)
            CALL   REPGOFORIT
            LD     (REPVARDATA+20),IY
REPINTERR6: LD     A,(REPMUSDATA+25)
            OR     A
            JR     Z,REPINTERR7
            LD     IX,REPMUSDATA+25
            LD     IY,(REPVARDATA+25)
            LD     DE,01030H
            CALL   REPGOFORIT
            LD     (REPVARDATA+25),IY
REPINTERR7: LD     A,(REPMUSDATA+30)
            OR     A
            JR     Z,REPINTERR8
            LD     IX,REPMUSDATA+30
            LD     IY,(REPVARDATA+30)
            LD     DE,01131H
            CALL   REPGOFORIT
            LD     (REPVARDATA+30),IY
REPINTERR8: LD     A,(REPMUSDATA+35)
            OR     A
            JR     Z,REPINTERR9
            LD     IX,REPMUSDATA+35
            LD     IY,(REPVARDATA+35)
            LD     DE,01232H
            CALL   REPGOFORIT
            LD     (REPVARDATA+35),IY
REPINTERR9: LD     A,(REPMUSDATA+40)
            OR     A
            JR     Z,REPINTERRA
            LD     IX,REPMUSDATA+40
            LD     IY,(REPVARDATA+40)
            LD     DE,01333H
            CALL   REPGOFORIT
            LD     (REPVARDATA+40),IY
REPINTERRA: LD     A,(REPMUSDATA+45)
            OR     A
            JR     Z,REPINTERRB
            LD     IX,REPMUSDATA+45
            LD     IY,(REPVARDATA+45)
            LD     DE,01434H
            CALL   REPGOFORIT
            LD     (REPVARDATA+45),IY
REPINTERRB: LD     A,(REPMUSDATA+50)
            OR     A
            JR     Z,REPINTERRC
            LD     IX,REPMUSDATA+50
            LD     IY,(REPVARDATA+50)
            LD     DE,01535H
            CALL   REPGOFORIT
            LD     (REPVARDATA+50),IY
REPINTERRC: LD     A,(REPMUSDATA+55)
            OR     A
            JR     Z,REPINTERRD
            LD     IX,REPMUSDATA+55
            LD     IY,(REPVARDATA+55)
            LD     DE,01636H
            CALL   REPGOFORIT
            LD     (REPVARDATA+55),IY
REPINTERRD: LD     A,(REPMUSDATA+60)
            OR     A
            JR     Z,REPINTERRE
            LD     IX,REPMUSDATA+60
            LD     IY,(REPVARDATA+60)
            LD     DE,01737H
            CALL   REPGOFORIT
            LD     (REPVARDATA+60),IY
REPINTERRE: LD     A,(REPMUSDATA+65)
            OR     A
            RET    Z
            LD     IX,REPMUSDATA+65
            LD     IY,(REPVARDATA+65)
            LD     DE,01838H
            CALL   REPGOFORIT
            LD     (REPVARDATA+65),IY
            XOR    A
            RET
;----------------------------------------------------------------------------

;Deze routine hoort bij REPINTERRU om naar de goede effectroutine te springen.


REPGOFORIT: CALL   REPGOFORI2
            JR     REPGOFORIT

REPGOFORI2: LD     L,(IY+0)
            LD     H,(IY+1)
            JP     (HL)
;-----------------------------------------------------------------------------

;Een opsomming van effecten.

EFFECT0:    DEFW   ENDLESS

EFFDRUM:    DEFW   PUTDRUMS,ENDLESS    ;Voor drums is er 1 mogelijk effect.

EFFINSTRU:  DEFW   PUTINSTRU0,ENDLESS  ;Voor instrument-0 is er 1 effect.

EFFPSG1:    DEFW   PSGOFF,ENDLESS
EFFPSG2:    DEFW   WAITINT,WAITINT,PSGDECVOLU,WAITINT,JUMPBACK
            DEFB   8
EFFPSG3:    DEFW   PSGNOT,ENDLESS
EFFPSG4:    DEFW   PSGNOTVOLU,ENDLESS
EFFPSG5:    DEFW   PSGNOTVOLU
EFFPSG6:    DEFW   COPYVAR,ISTIJD,PSGDECVOLU,JUMPBACK
            DEFB   4
EFFPSG7:    DEFW   PSGNOTVOLU,COPYVAR,ISTIJD,SETPSGVOLU
            DEFB   0
            DEFW   ISTIJD,PSGVOLUME,JUMPBACK
            DEFB   9
EFFPSG8:    DEFW   PSGNOTVOLU,COPYVAR,ISTIJD,SETPSGVOLU
            DEFB   0
EFFPSG9:    DEFW   ENDLESS
EFFPSG10:   DEFW   PSGNOT
EFFPSG11:   DEFW   COPYVAR,PSGVOLUME,PSSLIDEUPA,JUMPBACK
            DEFB   2
EFFPSG12:   DEFW   PSGNOT
EFFPSG13:   DEFW   COPYVAR,PSGVOLUME,PSSLIDEUPB,JUMPBACK
            DEFB   2
EFFPSG14:   DEFW   PSGNOT
EFFPSG15:   DEFW   COPYVAR,PSGVOLUME,ISTIJD,PSSLIDEUPC,JUMPBACK
            DEFB   4
EFFPSG16:   DEFW   PSGNOT
EFFPSG17:   DEFW   COPYVAR,PSGVOLUME,PSSLIDEDOA,JUMPBACK
            DEFB   2
EFFPSG18:   DEFW   PSGNOT
EFFPSG19:   DEFW   COPYVAR,PSGVOLUME,PSSLIDEDOB,JUMPBACK
            DEFB   2
EFFPSG20:   DEFW   PSGNOT
EFFPSG21:   DEFW   COPYVAR,PSGVOLUME,ISTIJD,PSSLIDEDOC,JUMPBACK
            DEFB   4
EFFPSG22:   DEFW   COPYVAR,PSGVOLUME,PSSLIDEUPA,ENDLESS
EFFPSG23:   DEFW   COPYVAR,PSGVOLUME,PSSLIDEUPB,ENDLESS
EFFPSG24:   DEFW   COPYVAR,PSGVOLUME,PSSLIDEDOA,ENDLESS
EFFPSG25:   DEFW   COPYVAR,PSGVOLUME,PSSLIDEDOB,ENDLESS
EFFPSG26:   EQU    EFFPSG4
EFFPSG27:   DEFW   PSONLYVOLU,ENDLESS
EFFPSG28:   DEFW   PSGNOT
EFFPSG29:   DEFW   COPYVAR,PSGVOLUME,PSSLIDEDOD
            DEFB   2
            DEFW   ISTIJD,PSSLIDEUPD
            DEFB   2
            DEFW   ISTIJD,JUMPBACK
            DEFB   10
EFFPSG30:   DEFW   PSGNOT
EFFPSG31:   DEFW   COPYVAR,PSGVOLUME,PSSLIDEDOD
            DEFB   5
            DEFW   ISTIJD,PSSLIDEUPD
            DEFB   5
            DEFW   ISTIJD,JUMPBACK
            DEFB   10
EFFPSG32:   DEFW   PSGNOT
EFFPSG33:   DEFW   COPYVAR,PSGVOLUME,PSSLIDEDOD
            DEFB   12
            DEFW   ISTIJD,PSSLIDEUPD
            DEFB   12
            DEFW   ISTIJD,JUMPBACK
            DEFB   10
EFFPSG34:   DEFW   PSGNOT
EFFPSG35:   DEFW   COPYVAR,PSGVOLUME,PSSLIDEDOD
            DEFB   20
            DEFW   ISTIJD,PSSLIDEUPD
            DEFB   20
            DEFW   ISTIJD,JUMPBACK
            DEFB   10
EFFPSG36:   DEFW   PSGNOT
EFFPSG37:   DEFW   COPYVAR,PSGVOLUME,PSSLIDEDOC,ISTIJD2
            DEFB   2
            DEFW   PSSLIDEUPC,ISTIJD2
            DEFB   2
            DEFW   JUMPBACK
            DEFB   10
EFFPSG38:   DEFW   PSGNOT
EFFPSG39:   DEFW   COPYVAR,PSGVOLUME,PSSLIDEDOD
            DEFB   2
            DEFW   ISTIJD2
            DEFB   3
            DEFW   PSSLIDEUPD
            DEFB   2
            DEFW   ISTIJD2
            DEFB   3
            DEFW   JUMPBACK
            DEFB   12
EFFPSG40:   DEFW   PSGNOT
EFFPSG41:   DEFW   COPYVAR,PSGVOLUME,PSSLIDEDOD
            DEFB   4
            DEFW   ISTIJD2
            DEFB   3
            DEFW   PSSLIDEUPD
            DEFB   4
            DEFW   ISTIJD2
            DEFB   3
            DEFW   JUMPBACK
            DEFB   12
EFFPSG42:   DEFW   PSGNOT
EFFPSG43:   DEFW   COPYVAR,PSGVOLUME,PSSLIDEDOC,WAITINT,ISTIJD2
            DEFB   4
            DEFW   PSSLIDEUPC,WAITINT,ISTIJD2
            DEFB   4
            DEFW   JUMPBACK
            DEFB   14
EFFPSG44:   DEFW   COPYVAR2,WAITINT,PSGVOLUME,PSGFASTNT,PSGFASTNT,PSGFASTNT
            DEFW   PSGOFF,ENDLESS
EFFPSG45:   DEFW   COPYVAR2,WAITINT,PSGVOLUME,PSGFASTNT,JUMPBACK
            DEFB   2
EFFPSG46:   DEFW   COPYVAR2,WAITINT,PSGVOLUME,PSGFASTNT,PSGFASTNT
            DEFW   PSGDECVOLU,JUMPBACK
            DEFB   6
EFFPSG47:   DEFW   COPYVAR2,WAITINT,PSGVOLUME,PSGFASTNT,PSGFASTNT,PSGFASTNT
            DEFW   PSGFASTNT,PSGFASTNT,PSGFASTNT,PSGDECVOLU,JUMPBACK
            DEFB   14
EFFPSG48:   DEFW   SETSPEEDP,ENDLESS
EFFPSG49:   DEFW   PSGNOTVOLU
EFFPSG50:   DEFW   COPYVAR,PSGDECVOLU,ISTIJD2
            DEFB   2
            DEFW   PSGINCVOLU,ISTIJD2
            DEFB   2
            DEFW   JUMPBACK
            DEFB   10
EFFPSG51:   DEFW   PSGNOTVOLU
EFFPSG52:   DEFW   COPYVAR,PSGDECVOLU,WAITINT,ISTIJD2
            DEFB   4
            DEFW   PSGINCVOLU,WAITINT,ISTIJD2
            DEFB   4
            DEFW   JUMPBACK
            DEFB   14
EFFPSG53:   DEFW   PSGNOTVOLU
EFFPSG54:   DEFW   COPYVAR,PSGDECVOLU,WAITINT,WAITINT,WAITINT,ISTIJD2
            DEFB   8
            DEFW   PSGINCVOLU,WAITINT,WAITINT,WAITINT,ISTIJD2
            DEFB   8
            DEFW   JUMPBACK
            DEFB   22
EFFPSG55:   DEFW   PSGNOTVOLU
EFFPSG56:   DEFW   COPYVAR,ISTIJD,PSGINCVOLU,JUMPBACK
            DEFB   4
EFFPSG57:   DEFW   PSGNOTVOLU,COPYVAR,ISTIJD,WAITINT,PSSLIDEVOLU
            DEFB   253
            DEFW   ISTIJD,WAITINT
            DEFW   PSSLIDEVOLU
            DEFB   2
            DEFW   JUMPBACK
            DEFB   14
EFFPSG58:   DEFW   PSGNOTVOLU,COPYVAR,ISTIJD,WAITINT,PSSLIDEVOLU
            DEFB   252
            DEFW   ISTIJD,WAITINT
            DEFW   PSSLIDEVOLU
            DEFB   2
            DEFW   JUMPBACK
            DEFB   14
EFFPSG59:   DEFW   PSGNOTVOLU,COPYVAR,ISTIJD,WAITINT,PSSLIDEVOLU
            DEFB   250
            DEFW   ISTIJD,WAITINT
            DEFW   PSSLIDEVOLU
            DEFB   3
            DEFW   JUMPBACK
            DEFB   14
EFFPSG60:   DEFW   COPYVAR,PSGNOTVOLU,PSSLIDEUPA,ENDLESS
EFFPSG61:   EQU    EFFECT0
EFFPSG62:   EQU    EFFECT0
EFFPSG63:   EQU    EFFECT0
EFFPSG64:   DEFW   COPYVAR,PSGVOLUME,ONLYRUIS,SETRUISFRQ,PSGDECVOLU,JUMPBACK
            DEFB   2
EFFPSG65:   DEFW   COPYVAR,PSGVOLUME,ONLYRUIS,SETRUISFRQ,PSGDECVOLU,WAITINT,JUMPBACK
            DEFB   4
EFFPSG66:   DEFW   COPYVAR,PSGVOLUME,ONLYRUIS,SETRUISFRQ,PSGDECVOLU,WAITINT,WAITINT
            DEFW   JUMPBACK
            DEFB   6
EFFPSG67:   DEFW   COPYVAR,PSGVOLUME,ONLYRUIS,SETRUISFRQ,PSGDECVOLU
            DEFW   WAITINT,WAITINT,WAITINT,WAITINT,JUMPBACK
            DEFB   10
EFFPSG68:   DEFW   COPYVAR,PSGVOLUME,ONLYRUIS,SETRUISFRQ,JUMP,EFFHULP+14
EFFPSG69:   DEFW   COPYVAR,PSGVOLUME,ONLYRUIS,SETRUISFRQ,JUMP,EFFHULP+12
EFFPSG70:   DEFW   COPYVAR,PSGVOLUME,ONLYRUIS,SETRUISFRQ,JUMP,EFFHULP+8
EFFPSG71:   DEFW   COPYVAR,PSGVOLUME,ONLYRUIS,SETRUISFRQ,JUMP,EFFHULP+2
EFFPSG72:   DEFW   ONLYTOON,WAITINT,PSONLYVOLU,PUTPSGFREQ,0D003H,WAITINT
            DEFW   PUTPSGFREQ,00007H,PSSLIDEVOL
            DEFB   248
            DEFW   WAITINT,PUTPSGFREQ,00009H,PSSLIDEVOL
            DEFB   253
            DEFW   PUTPSGFREQ,0000CH,WAITINT,PSGDECVOLU,SETPSGVOLU
            DEFB   0
            DEFW   ENDLESS
EFFPSG73:   DEFW   COPYVAR,ONLYRUIS,PSGVOLUME,SETRUISFRQ,WAITINT
            DEFW   SLIDERUIS
            DEFB   6
            DEFW   WAITINT,ONLYRUIS,PSSLIDEVOLU
            DEFB   252
            DEFW   WAITINT,PSGDECVOLU,SETPSGVOLU
            DEFB   0
            DEFW   ENDLESS
EFFPSG74:   DEFW   COPYVAR,PSGVOLUME,TOONRUIS,PUTPSGFREQ,00B00H,SETRUISFRQ
            DEFW   WAITINT,PUTPSGFREQ,00A00H,SLIDERUIS
            DEFB   254
            DEFW   PSSLIDEVOLU
            DEFB   253
            DEFW   WAITINT,PSGDECVOLU,PSSLIDEVOLU
            DEFB   2
            DEFW   SLIDERUIS
            DEFB   252
            DEFW   WAITINT,PSSLIDEVOLU
            DEFB   253
            DEFW   WAITINT,JUMPBACK
            DEFB   5
EFFPSG75:   DEFW   COPYVAR,PUTPSGFREQ,00D00H,PSONLYVOLU,SETRUISFRQ,TOONRUIS
            DEFW   WAITINT,PUTPSGFREQ,00B00H,PSSLIDEVOLU
            DEFB   254
            DEFW   WAITINT,SETPSGVOLU
            DEFB   0
            DEFW   ENDLESS
EFFPSG76:   DEFW   COPYVAR,WAITINT,PSGNOTVOLU,PSSLIDEVOLU
            DEFB   254
            DEFW   SETRUISFRQ,ONLYRUIS,WAITINT,PSGDECVOLU,WAITINT
            DEFW   PSGDECVOLU,WAITINT,WAITINT,WAITINT,SLIDERUIS
            DEFB   255
            DEFW   PSGDECVOLU,WAITINT,PSGDECVOLU,WAITINT,SETPSGVOLU
            DEFB   0
            DEFW   ENDLESS
EFFPSG77:   DEFW   WAITINT,SETPSGTIME,04200H,PUTPSGFREQ,0B001H,SETVOLU16
            DEFW   ONLYTOON,SOUND,00D0AH,WAITINT,WAITINT,ONLYRUIS,SOUND
            DEFW   00608H,SETPSGVOLU
            DEFB   10
            DEFW   PSGDECVOLU,JUMPBACK
            DEFB   2
EFFPSG78:   DEFW   COPYVAR,WAITINT,PSGNOTVOLU,WAITINT,WAITINT,WAITINT
            DEFW   PSGDECVOLU,WAITINT,ISTIJD2
            DEFB   4
            DEFW   ENDLESS
EFFPSG79:   DEFW   COPYVAR,PSGVOLUME,ONLYRUIS,SETRUISFRQ,WAITINT,SLIDERUIS
            DEFB   2
            DEFW   PSGDECVOLU,JUMPBACK
            DEFB   5
EFFPSG80:   DEFW   COPYVAR,PSGVOLUME,ONLYRUIS,SETRUISFRQ,WAITINT,SLIDERUIS
            DEFB   254
            DEFW   PSGDECVOLU,JUMPBACK
            DEFB   5
EFFPSG81:   DEFW   ONLYTOON,SOUND,00800H,SETPSGTIME,00003H,WAITINT
            DEFW   PUTPSGFREQ,0D003H,SETVOLU16,SOUND,00D09H,WAITINT
            DEFW   PUTPSGFREQ,00006H,WAITINT,SOUND,00107H,WAITINT
            DEFW   SOUND,00108H,WAITINT,SETPSGVOLU
            DEFB   0
            DEFW   ENDLESS

EFFHULP:    DEFW   WAITINT,WAITINT,WAITINT,WAITINT,WAITINT,WAITINT,WAITINT
            DEFW   WAITINT,SETPSGVOLU
            DEFB   0
            DEFW   ENDLESS

EFFFM1:     DEFW   FMOFF1,ENDLESS
EFFFM2:     DEFW   FMOFF2,ENDLESS
EFFFM3:     DEFW   FMNOTE,ENDLESS
EFFFM4:     DEFW   FMNOTVOLIN,ENDLESS
EFFFM5:     DEFW   FMNOTEVOLU
EFFFM6:     DEFW   COPYVAR,ISTIJD,FMDECVOLU,JUMPBACK
            DEFB   4
EFFFM7:     DEFW   FMNOTEVOLU,COPYVAR,ISTIJD,SETFMVOLU
            DEFB   15
            DEFW   ISTIJD,FMVOLUME,JUMPBACK
            DEFB   9
EFFFM8:     DEFW   FMNOTEVOLU,COPYVAR,ISTIJD,SETFMVOLU
            DEFB   15
EFFFM9:     DEFW   ENDLESS
EFFFM10:    DEFW   FMNOTE
EFFFM11:    DEFW   COPYVAR,FMVOLUME,FMSLIDEUPA,JUMPBACK
            DEFB   2
EFFFM12:    DEFW   FMNOTE
EFFFM13:    DEFW   COPYVAR,FMVOLUME,FMSLIDEUPB,JUMPBACK
            DEFB   2
EFFFM14:    DEFW   FMNOTE
EFFFM15:    DEFW   COPYVAR,FMVOLUME,ISTIJD,FMSLIDEUPC,JUMPBACK
            DEFB   4
EFFFM16:    DEFW   FMNOTE
EFFFM17:    DEFW   COPYVAR,FMVOLUME,FMSLIDEDOA,JUMPBACK
            DEFB   2
EFFFM18:    DEFW   FMNOTE
EFFFM19:    DEFW   COPYVAR,FMVOLUME,FMSLIDEDOB,JUMPBACK
            DEFB   2
EFFFM20:    DEFW   FMNOTE
EFFFM21:    DEFW   COPYVAR,FMVOLUME,ISTIJD,FMSLIDEDOC,JUMPBACK
            DEFB   4
EFFFM22:    DEFW   COPYVAR,FMVOLUME,FMSLIDEUPA,ENDLESS
EFFFM23:    DEFW   COPYVAR,FMVOLUME,FMSLIDEUPB,ENDLESS
EFFFM24:    DEFW   COPYVAR,FMVOLUME,FMSLIDEDOA,ENDLESS
EFFFM25:    DEFW   COPYVAR,FMVOLUME,FMSLIDEDOB,ENDLESS
EFFFM26:    DEFW   FMSTOPFREQ,ENDLESS
EFFFM27:    DEFW   FMONLYVOLU,ENDLESS
EFFFM28:    DEFW   FMNOTE
EFFFM29:    DEFW   COPYVAR,FMVOLUME,FMSLIDEDOD
            DEFB   3
            DEFW   ISTIJD,FMSLIDEUPD
            DEFB   3
            DEFW   ISTIJD,JUMPBACK
            DEFB   10
EFFFM30:    DEFW   FMNOTE
EFFFM31:    DEFW   COPYVAR,FMVOLUME,FMSLIDEDOD
            DEFB   8
            DEFW   ISTIJD,FMSLIDEUPD
            DEFB   8
            DEFW   ISTIJD,JUMPBACK
            DEFB   10
EFFFM32:    DEFW   FMNOTE
EFFFM33:    DEFW   COPYVAR,FMVOLUME,FMSLIDEDOD
            DEFB   15
            DEFW   ISTIJD,FMSLIDEUPD
            DEFB   15
            DEFW   ISTIJD,JUMPBACK
            DEFB   10
EFFFM34:    DEFW   FMNOTE
EFFFM35:    DEFW   COPYVAR,FMVOLUME,FMSLIDEDOD
            DEFB   30
            DEFW   ISTIJD,FMSLIDEUPD
            DEFB   30
            DEFW   ISTIJD,JUMPBACK
            DEFB   10
EFFFM36:    DEFW   FMNOTE
EFFFM37:    DEFW   COPYVAR,FMVOLUME,FMSLIDEDOC,ISTIJD2
            DEFB   2
            DEFW   FMSLIDEUPC,ISTIJD2
            DEFB   2
            DEFW   JUMPBACK
            DEFB   10
EFFFM38:    DEFW   FMNOTE
EFFFM39:    DEFW   COPYVAR,FMVOLUME,FMSLIDEDOD
            DEFB   2
            DEFW   ISTIJD2
            DEFB   3
            DEFW   FMSLIDEUPD
            DEFB   2
            DEFW   ISTIJD2
            DEFB   3
            DEFW   JUMPBACK
            DEFB   12
EFFFM40:    DEFW   FMNOTE
EFFFM41:    DEFW   COPYVAR,FMVOLUME,FMSLIDEDOD
            DEFB   4
            DEFW   ISTIJD2
            DEFB   3
            DEFW   FMSLIDEUPD
            DEFB   4
            DEFW   ISTIJD2
            DEFB   3
            DEFW   JUMPBACK
            DEFB   12
EFFFM42:    DEFW   FMNOTE
EFFFM43:    DEFW   COPYVAR,FMVOLUME,FMSLIDEDOC,WAITINT,ISTIJD2
            DEFB   4
            DEFW   FMSLIDEUPC,WAITINT,ISTIJD2
            DEFB   4
            DEFW   JUMPBACK
            DEFB   14
EFFFM44:    DEFW   COPYVAR2,WAITINT,FMVOLUME,FMFASTNT,FMFASTNTB,FMFASTNTB
            DEFW   FMOFF1,ENDLESS
EFFFM45:    DEFW   COPYVAR2,WAITINT,FMVOLUME,FMFASTNT,FMFASTNTB,JUMPBACK
            DEFB   2
EFFFM46:    DEFW   COPYVAR2,WAITINT,FMVOLUME,FMFASTNT,FMFASTNTB,FMFASTNTB
            DEFW   FMDECVOLU,JUMPBACK
            DEFB   6
EFFFM47:    DEFW   COPYVAR2,WAITINT,FMVOLUME,FMFASTNT,FMFASTNTB,FMFASTNTB
            DEFW   FMFASTNTB,FMFASTNTB,FMFASTNTB,FMFASTNTB,FMDECVOLU
            DEFW   JUMPBACK
            DEFB   14
EFFFM48:    DEFW   SETSPEEDF,ENDLESS
EFFFM49:    EQU    EFFECT0
EFFFM50:    EQU    EFFECT0
EFFFM51:    EQU    EFFECT0
EFFFM52:    EQU    EFFECT0
EFFFM53:    EQU    EFFECT0
EFFFM54:    EQU    EFFECT0
EFFFM55:    DEFW   FMNOTEVOLU
EFFFM56:    DEFW   COPYVAR,ISTIJD,FMINCVOLU,JUMPBACK
            DEFB   4
EFFFM57:    DEFW   FMNOTEVOLU,COPYVAR,ISTIJD,WAITINT,FMSLIDEVOLU
            DEFB   253
            DEFW   ISTIJD,WAITINT
            DEFW   FMSLIDEVOLU
            DEFB   2
            DEFW   JUMPBACK
            DEFB   14
EFFFM58:    DEFW   FMNOTEVOLU,COPYVAR,ISTIJD,WAITINT,FMSLIDEVOL
            DEFB   252
            DEFW   ISTIJD,WAITINT
            DEFW   FMSLIDEVOLU
            DEFB   2
            DEFW   JUMPBACK
            DEFB   14
EFFFM59:    DEFW   FMNOTEVOLU,COPYVAR,ISTIJD,WAITINT,FMSLIDEVOL
            DEFB   250
            DEFW   ISTIJD,WAITINT
            DEFW   FMSLIDEVOL
            DEFB   3
            DEFW   JUMPBACK
            DEFB   14
EFFFM60:    DEFW   COPYVAR,FMNOTEVOLU,FMSLIDEUPA,ENDLESS
EFFFM61:    EQU    EFFECT0
EFFFM62:    EQU    EFFECT0
EFFFM63:    EQU    EFFECT0
EFFFM64:    DEFW   INSTRUMENT,ENDLESS
EFFFM65:    EQU    EFFECT0
EFFFM66:    EQU    EFFECT0
EFFFM67:    EQU    EFFECT0
EFFFM68:    EQU    EFFECT0
EFFFM69:    EQU    EFFECT0
EFFFM70:    EQU    EFFECT0
EFFFM71:    EQU    EFFECT0
EFFFM72:    EQU    EFFECT0
EFFFM73:    EQU    EFFECT0
EFFFM74:    EQU    EFFECT0
EFFFM75:    EQU    EFFECT0
EFFFM76:    EQU    EFFECT0
EFFFM77:    EQU    EFFECT0
EFFFM78:    EQU    EFFECT0
EFFFM79:    EQU    EFFECT0
EFFFM80:    EQU    EFFECT0
EFFFM81:    EQU    EFFECT0

;----------------------------------------------------------------------------

;Effect-routines

SETPSGTIME: LD     C,11
            LD     B,(IY+3)
            CALL   WRTPSG
            INC    C
            LD     B,(IY+2)
            CALL   WRTPSG
            LD     BC,4
            ADD    IY,BC
            RET

SOUND:      LD     B,(IY+2)
            LD     C,(IY+3)
            CALL   WRTPSG
            LD     BC,4
            ADD    IY,BC
            RET

PSSLIDEVOL: LD     A,(IX+74)
            LD     B,(IY+2)
            ADD    A,B
            CP     16
            JR     C,PSSLIDEVOB
            CP     200
            LD     A,15
            JR     C,PSSLIDEVOB
            XOR    A
PSSLIDEVOB: LD     (IX+74),A
            INC    IY
            INC    IY
            INC    IY
            LD     B,A
            LD     C,E
            JP     WRTPSG

FMSLIDEVOL: LD     A,(IX+74)
            AND    240
            LD     C,A
            LD     A,(IX+74)
            AND    15
            LD     B,(IY+2)
            SUB    B
            CP     16
            JR     C,FMSLIDEVOB
            CP     200
            LD     A,15
            JR     C,FMSLIDEVOB
            XOR    A
FMSLIDEVOB: OR     C
            LD     (IX+74),A
            INC    IY
            INC    IY
            INC    IY
            LD     B,A
            LD     C,E
            JP     WRTOPLL

PUTPSGFREQ: LD     C,D
            LD     B,(IY+3)
            LD     (IX+73),B
            CALL   WRTPSG
            INC    C
            LD     B,(IY+2)
            LD     (IX+72),B
            CALL   WRTPSG
            LD     BC,4
            ADD    IY,BC
            RET

JUMP:       LD     L,(IY+2)
            LD     H,(IY+3)
            PUSH   HL
            POP    IY
            RET

TOONRUIS:   LD     BC,0B007H
            JR     ONLYRUISB

NOTOONRUIS: LD     BC,0BF07H
            JR     ONLYRUISB

ONLYTOON:   LD     BC,0B807H
            JR     ONLYRUISB

ONLYRUIS:   LD     BC,0B107H
ONLYRUISB:  INC    IY
            INC    IY
            JP     WRTPSG

SETVOLU16:  INC    IY
            INC    IY
            LD     A,(REPDECVOLU)
            CP     4
            LD     B,16
            JR     C,SETVOLU16B
            LD     B,0
SETVOLU16B: LD     C,E
            LD     (IX+74),B
            JP     WRTPSG

SETRUISFRQ: LD     B,(IX-81)
            DEC    B
            SLA    B
            LD     A,B
            LD     (RUISFREQ),A
            LD     C,6
            INC    IY
            INC    IY
            JP     WRTPSG

SLIDERUIS:  LD     A,(RUISFREQ)
            LD     B,(IY+2)
            ADD    A,B
            CP     32
            JR     C,SLIDERUISC
            LD     A,31
            CP     50
            JR     C,SLIDERUISC
            XOR    A
SLIDERUISC: LD     (RUISFREQ),A
            INC    IY
            INC    IY
            INC    IY
            LD     B,A
            LD     C,6
            JP     WRTPSG

FMSLIDEUPA: LD     L,(IX-81)
            JR     FMFREQUP

FMSLIDEUPB: LD     A,(IX-81)
            ADD    A,16
            LD     L,A
            JR     FMFREQUP

FMSLIDEUPC: LD     L,1
            JR     FMFREQUP

FMSLIDEUPD: LD     L,(IY+2)
            INC    IY

FMFREQUP:   LD     A,(IX+73)
            ADD    A,L
            LD     (IX+73),A
            PUSH   AF
            LD     B,A
            LD     C,D
            CALL   WRTOPLL
            POP    AF
            JR     NC,FMFREQUPC
            LD     A,(IX+72)
            AND    15
            OR     A
            JR     Z,FMFREQUPB
            INC    A
FMFREQUPB:  INC    A
            LD     (IX+72),A
            LD     B,A
            SET    4,B
            LD     C,E
            RES    4,C
            CALL   WRTOPLL
FMFREQUPC:  INC    IY
            INC    IY
            POP    AF
            RET

FMSLIDEDOA: LD     L,(IX-81)
            JR     FMFREQDOWN

FMSLIDEDOB: LD     A,(IX-81)
            ADD    A,16
            LD     L,A
            JR     FMFREQDOWN

FMSLIDEDOC: LD     L,1
            JR     FMFREQDOWN

FMSLIDEDOD: LD     L,(IY+2)
            INC    IY

FMFREQDOWN: LD     A,(IX+73)
            SUB    L
            LD     (IX+73),A
            PUSH   AF
            LD     B,A
            LD     C,D
            CALL   WRTOPLL
            POP    AF
            JR     NC,FMFREQDOWC
            LD     A,(IX+72)
            AND    15
            CP     1
            JR     Z,FMFREQDOWB
            DEC    A
FMFREQDOWB: DEC    A
            LD     (IX+72),A
            LD     B,A
            SET    4,B
            LD     C,E
            RES    4,C
            CALL   WRTOPLL
FMFREQDOWC: INC    IY
            INC    IY
            POP    AF
            RET

PSSLIDEUPA: LD     L,(IX-81)
            JR     PSGFREQUP

PSSLIDEUPB: LD     A,(IX-81)
            ADD    A,16
            LD     L,A
            JR     PSGFREQUP

PSSLIDEUPC: LD     L,1
            JR     PSGFREQUP

PSSLIDEUPD: LD     L,(IY+2)
            INC    IY

PSGFREQUP:  LD     A,L
            NEG
            LD     L,A
            LD     H,255
            JR     PSGFREQDOB

PSSLIDEDOA: LD     L,(IX-81)
            JR     PSGFREQDOW

PSSLIDEDOB: LD     A,(IX-81)
            ADD    A,16
            LD     L,A
            JR     PSGFREQDOW

PSSLIDEDOC: LD     L,1
            JR     PSGFREQDOW

PSSLIDEDOD: LD     L,(IY+2)
            INC    IY

PSGFREQDOW: LD     H,0
PSGFREQDOB: LD     C,(IX+73)
            LD     B,(IX+72)
            ADD    HL,BC
            LD     (IX+73),L
            LD     (IX+72),H
            LD     B,L
            LD     C,D
            CALL   WRTPSG
            LD     B,H
            INC    C
            CALL   WRTPSG
            INC    IY
            INC    IY
            POP    AF
            RET

FMOFF2:     LD     A,(IX+72)
            AND    15
            OR     32
            JR     FMOFF1B

FMOFF1:     LD     A,(IX+72)
            AND    15
FMOFF1B:    LD     B,A
            LD     C,E
            RES    4,C
            CALL   WRTOPLL
            INC    IY
            INC    IY
            POP    AF
            RET

SETPSGVOLU: LD     B,(IY+2)
            LD     (IX+74),B
            INC    IY
            INC    IY
            INC    IY
            POP    AF
            LD     C,E
            JP     WRTVOLUPSG

SETFMVOLU:  LD     A,(IX+74)
            AND    240
            LD     B,A
            LD     A,(IY+2)
            AND    15
            OR     B
            LD     (IX+74),A
            LD     B,A
            LD     C,E
            INC    IY
            INC    IY
            INC    IY
            POP    AF
            JP     WRTVOLUFMB

FMSTOPFREQ: CALL   FMONLYVOLB
            JR     FMNOTE3

FMNOTEVOLU: CALL   FMONLYVOLB
            JR     FMNOTE2

FMONLYVOLU: CALL   FMONLYVOLB
            LD     (IX-79),B
            INC    IY
            INC    IY
            POP    AF
            RET

FMONLYVOLB: LD     A,(IX+2)
            OUT    (0FDH),A
            LD     L,(IX+3)
            LD     H,(IX+4)
            INC    HL
            LD     A,(IX+74)
            AND    240
            LD     B,A
            LD     A,(HL)
            AND    15
            OR     B
            LD     (IX+74),A
            LD     B,A
            LD     C,E
            JP     WRTVOLUFMB

FMNOTVOLIN: LD     A,(IX+2)
            OUT    (0FDH),A
            LD     L,(IX+3)
            LD     H,(IX+4)
            INC    HL
            LD     B,(HL)
            LD     C,E
            LD     (IX+74),B
            CALL   WRTVOLUFMB
            JR     FMNOTE2

FMFASTNT:   LD     C,E
            RES    4,C
            LD     B,0
            CALL   WRTOPLL
            LD     A,(IX-77)
            LD     (FMFASTNT2+2),A
FMFASTNT2:  LD     C,(IX-0)
            CALL   NEXTTOON
            JP     FMNOTE4

FMFASTNTB:  LD     A,(IX-77)
            LD     (FMFASTNTB2+2),A
FMFASTNTB2: LD     C,(IX-0)
            CALL   NEXTTOON
            JP     FMNOTE4

FMNOTE:     LD     A,(IX+2)
            OUT    (0FDH),A
            LD     L,(IX+3)
            LD     H,(IX+4)
            INC    HL
FMNOTE2:    LD     C,E
            RES    4,C
            LD     B,0
            CALL   WRTOPLL
FMNOTE3:    INC    HL
            LD     C,(HL)
FMNOTE4:    LD     B,0
            LD     HL,FMTONEN
            ADD    HL,BC
            LD     B,(HL)
            LD     C,D
            LD     (IX+73),B
            CALL   WRTOPLL
            LD     C,E
            RES    4,C
            INC    HL
            LD     B,(HL)
            LD     (IX+72),B
            SET    4,B
            CALL   WRTOPLL
            INC    IY
            INC    IY
            POP    AF
            RET

SETSPEEDP:  LD     B,0
            JR     SETSPEED
SETSPEEDF:  LD     B,15
SETSPEED:   LD     A,(IX+2)
            OUT    (0FDH),A
            LD     L,(IX+3)
            LD     H,(IX+4)
            INC    HL
            LD     A,(HL)
            XOR    B
            RRC    A
            RRC    A
            RRC    A
            RRC    A
            ADD    A,3
            CP     3
            JR     NC,SETSPEED2
            LD     A,255
SETSPEED2:  LD     (REPSPEED),A
            INC    IY
            INC    IY
            POP    AF
            RET

JUMPBACK:   LD     A,(IY+2)
            NEG
            LD     C,A
            LD     B,255
            ADD    IY,BC
            RET

WAITINT:    INC    IY
            INC    IY
            POP    AF
            RET

FMDECVOLU:  INC    IY
            INC    IY
            POP    AF
            LD     A,(IX+74)
            AND    15
            CP     15
            RET    Z
            LD     B,(IX+74)
            INC    B
            LD     (IX+74),B
            LD     C,E
            JP     WRTVOLUFMB

FMINCVOLU:  INC    IY
            INC    IY
            POP    AF
            LD     A,(IX+74)
            AND    15
            RET    Z
            LD     B,(IX+74)
            DEC    B
            LD     (IX+74),B
            LD     C,E
            JP     WRTVOLUFMB

PSGDECVOLU: POP    AF
PSGDECVOLB: INC    IY
            INC    IY
            LD     A,(IX+74)
            AND    15
            RET    Z
            DEC    A
            LD     (IX+74),A
            LD     B,A
            LD     C,E
            JP     WRTVOLUPSG

PSGINCVOLU: POP    AF
PSGINCVOLB: INC    IY
            INC    IY
            LD     A,(IX+74)
            AND    15
            CP     15
            RET    Z
            INC    A
            LD     (IX+74),A
            LD     B,A
            LD     C,E
            JP     WRTVOLUPSG

ISTIJD:     DEC    (IX-80)
            JR     Z,ISTIJDB
            POP    AF
            RET
ISTIJDB:    LD     A,(IX-81)
            LD     (IX-80),A
            INC    IY
            INC    IY
            RET

ISTIJD2:    DEC    (IX-80)
            JP     NZ,JUMPBACK
            LD     A,(IX-81)
            LD     (IX-80),A
            INC    IY
            INC    IY
            INC    IY
            RET

COPYVAR:    LD     A,(IX+2)
            OUT    (0FDH),A
            LD     L,(IX+3)
            LD     H,(IX+4)
            INC    HL
            LD     A,(HL)
            LD     (IX-79),A
            SRL    A
            SRL    A
            SRL    A
            SRL    A
            INC    A
            LD     (IX-81),A
            LD     (IX-80),A
            INC    HL
            LD     A,(HL)
            LD     (IX-78),A
            INC    IY
            INC    IY
            RET

COPYVAR2:   LD     A,(IX+2)
            OUT    (0FDH),A
            LD     L,(IX+3)
            LD     H,(IX+4)
            INC    HL
            LD     B,(HL)
            INC    HL
            LD     A,(HL)
	LD	C,A
	LD	(IX-78),A
	AND	00011000B
	JR	NZ,COPYVAR2B
	LD	A,32
	ADD	A,C
	LD	C,A
COPYVAR2B:	LD	A,B
            SRL    A
            SRL    A
            SRL    A
            AND    00011110B
	ADD	A,C
	CALL	COPYVAR2C
	LD	(IX-80),A
            LD     A,B
            AND    15
            SLA    A
            ADD    A,C
	CALL	COPYVAR2C
	LD	(IX-81),A
            LD     (IX-77),-78
            INC    IY
            INC    IY
            RET
COPYVAR2C:	BIT	3,A
	RET	NZ
	BIT	4,A
	RET	NZ
	SUB	32
	RET

NEXTTOON:   LD     A,(IX-77)
            DEC    A
            CP     -79
            JR     NZ,NEXTTOONB
            DEC    A
NEXTTOONB:  CP     -82
            JR     NZ,NEXTTOONC
            LD     A,-78
NEXTTOONC:  LD     (IX-77),A
            RET

PSGVOLUME:  LD     A,(IX-79)
            AND    15
            LD     B,A
            LD     C,E
            LD     (IX+74),B
            INC    IY
            INC    IY
            POP    AF
            JP     WRTVOLUPSG

FMVOLUME:   LD     A,(IX+74)
            AND    240
            LD     B,A
            LD     A,(IX-79)
            AND    15
            OR     B
            LD     B,A
            LD     C,E
            LD     (IX+74),B
            INC    IY
            INC    IY
            POP    AF
            JP     WRTVOLUFMB

PSGNOTVOLU: CALL   PSONLYVOLB
            JR     PSGNOT2

PSONLYVOLU: CALL   PSONLYVOLB
PSONLYVOLV: LD     (IX-79),0
            INC    IY
            INC    IY
            POP    AF
            RET

PSONLYVOLB: LD     A,(IX+2)
            OUT    (0FDH),A
            LD     L,(IX+3)
            LD     H,(IX+4)
            INC    HL
            LD     A,(HL)
            AND    15
            LD     (PSONLYVOLV+3),A
            LD     B,A
            LD     C,E
            LD     (IX+74),B
            JP     WRTVOLUPSG

INSTRUMENT: LD     A,(IX+2)
            OUT    (0FDH),A
            LD     L,(IX+3)
            LD     H,(IX+4)
            INC    HL
            LD     A,(HL)
            LD     (IX+74),A
            LD     (IX-79),A
            LD     B,A
            LD     C,E
            INC    IY
            INC    IY
            POP    AF
            JP     WRTOPLL

PSGFASTNT:  LD     A,(IX-77)
            LD     (PSGFASTNT2+2),A
PSGFASTNT2: LD     C,(IX-0)
            CALL   NEXTTOON
            JP     PSGNOT3

PSGNOT:     LD     A,(IX+2)
            OUT    (0FDH),A
            LD     L,(IX+3)
            LD     H,(IX+4)
            INC    HL
PSGNOT2:    INC    HL
            LD     C,(HL)
PSGNOT3:    LD     B,0
            LD     HL,PSGTONEN
            ADD    HL,BC
            LD     B,(HL)
            LD     C,D
            LD     (IX+73),B
            CALL   WRTPSG
            INC    C
            INC    HL
            LD     B,(HL)
            LD     (IX+72),B
            CALL   WRTPSG
            INC    IY
            INC    IY
            POP    AF

PSGRUISOFF: LD     A,D
            OR     A
            RET    NZ
            LD     BC,0F807H
            JP     WRTPSG

PSGOFF:     LD     C,D
            LD     B,0
            CALL   WRTPSG
            INC    C
            CALL   WRTPSG
            LD     (IX+72),B
            LD     (IX+73),B
            INC    IY
            INC    IY
            POP    AF
            RET

PUTINSTRU0: LD     A,(IX+2)
            OUT    (0FDH),A
            LD     L,(IX+3)
            LD     H,(IX+4)
            LD     A,(HL)
            LD     L,A
            LD     H,0
            ADD    HL,HL
            ADD    HL,HL
            ADD    HL,HL
            LD     DE,INSTR0DATA
            ADD    HL,DE
            LD     B,8
            LD     C,0
PUTINSTR0B: LD     A,(HL)
            CALL   WRTOPLL3
            INC    HL
            INC    C
            DJNZ   PUTINSTR0B
            INC    IY
            INC    IY
            POP    AF
            RET

ENDLESS:    POP    AF
            RET

PUTDRUMS:   LD     A,(IX+2)
            OUT    (0FDH),A
            LD     L,(IX+3)
            LD     H,(IX+4)
            LD     BC,0000EH
            CALL   WRTOPLL
            LD     C,038H
            LD     B,(HL)
            CALL   WRTVOLUFMA
            INC    HL
            DEC    C
            LD     B,(HL)
            CALL   WRTVOLUFMA
            INC    HL
            DEC    C
            LD     B,(HL)
            CALL   WRTVOLUFMB
            LD     A,B
            LD     B,4
PUTDRUMSB:  SRL    A
            DJNZ   PUTDRUMSB
            INC    HL
            LD     C,(HL)
            SLA    C
            RL     A
            OR     32
            LD     B,A
            LD     A,14
            CALL   WRTOPLL2
            INC    IY
            INC    IY
            POP    AF
            RET


;----------------------------------------------------------------------------

; De volgende data bevat de frequenties van alle PSG noten (8 octaafs)

PSGTONEN:   DEFB   242,7,128,7,20,7,93,13,93,13,156,12,231,11,60,11
            DEFB   155,10,2,10,2,10,115,9,235,8,107,8,0,0,0,0
            DEFB   249,3,192,3,138,3,175,6,175,6,78,6,244,5,158,5
            DEFB   78,5,1,5,1,5,186,4,118,4,54,4,0,0,0,0
            DEFB   253,1,224,1,197,1,87,3,87,3,39,3,250,2,207,2
            DEFB   167,2,129,2,129,2,93,2,59,2,27,2,0,0,0,0
            DEFB   254,0,240,0,227,0,172,1,172,1,148,1,125,1,104,1
            DEFB   83,1,64,1,64,1,46,1,29,1,13,1,0,0,0,0
            DEFB   127,0,120,0,113,0,214,0,214,0,202,0,190,0,180,0
            DEFB   170,0,160,0,160,0,151,0,143,0,135,0,0,0,0,0
            DEFB   64,0,60,0,57,0,107,0,107,0,101,0,95,0,90,0
            DEFB   85,0,80,0,80,0,76,0,71,0,67,0,0,0,0,0
            DEFB   32,0,30,0,28,0,53,0,53,0,50,0,48,0,45,0
            DEFB   42,0,40,0,40,0,38,0,36,0,34,0,0,0,0,0
            DEFB   16,0,15,0,14,0,27,0,27,0,25,0,24,0,22,0
            DEFB   21,0,20,0,20,0,19,0,18,0,17,0,0,0,0,0

;Deze data bevat alle frequenties van de FM noten (8 octaafs)

FMTONEN:    DEFB   34,1,51,1,69,1,172,0,172,0,182,0,193,0,205,0
            DEFB   217,0,230,0,230,0,244,0,2,1,17,1,0,0,0,0
            DEFB   34,3,51,3,69,3,89,1,89,1,109,1,131,1,154,1
            DEFB   178,1,204,1,204,1,232,1,2,3,17,3,0,0,0,0
            DEFB   34,5,51,5,69,5,89,3,89,3,109,3,131,3,154,3
            DEFB   178,3,204,3,204,3,232,3,2,5,17,5,0,0,0,0
            DEFB   34,7,51,7,69,7,89,5,89,5,109,5,131,5,154,5
            DEFB   178,5,204,5,204,5,232,5,2,7,17,7,0,0,0,0
            DEFB   34,9,51,9,69,9,89,7,89,7,109,7,131,7,154,7
            DEFB   178,7,204,7,204,7,232,7,2,9,17,9,0,0,0,0
            DEFB   34,11,51,11,69,11,89,9,89,9,109,9,131,9,154,9
            DEFB   178,9,204,9,204,9,232,9,2,11,17,11,0,0,0,0
            DEFB   34,13,51,13,69,13,89,11,89,11,109,11,131,11,154,11
            DEFB   178,11,204,11,204,11,232,11,2,13,17,13,0,0,0,0
            DEFB   34,15,51,15,69,15,89,13,89,13,109,13,131,13,154,13
            DEFB   178,13,204,13,204,13,232,13,2,15,17,15,0,0,0,0


;-----------------------------------------------------------------------------


;Routines die rechtsstreeks naar de OPLL-chip en naar de PSG schrijven.

WRTOPLL:    LD     A,C
            OUT    (07CH),A
            EX     (SP),HL
            EX     (SP),HL
            LD     A,B
            NOP
            OUT    (07DH),A
            RET

WRTOPLL2:   OUT    (07CH),A
            EX     (SP),HL
            EX     (SP),HL
            PUSH   AF
            LD     A,B
            OUT    (07DH),A
            POP    AF
            RET

WRTOPLL3:   PUSH   AF
            LD     A,C
            OUT    (07CH),A
            EX     (SP),HL
            EX     (SP),HL
            POP    AF
            NOP
            OUT    (07DH),A
            RET

WRTVOLUFMA: LD     A,B
            AND    15
            LD     DE,(REPDECVOLU)
            ADD    A,E
            BIT    4,A
            JR     Z,WRTVOLFMA2
            LD     A,15
WRTVOLFMA2: LD     D,A
            LD     A,C
            OUT    (07CH),A
            SLA    E
            SLA    E
            SLA    E
            SLA    E
            LD     A,B
            AND    240
            ADD    A,E
            JR     NC,WRTVOLFMA3
            LD     A,240
WRTVOLFMA3: OR     D
            OUT    (07DH),A
            RET

WRTVOLUFMB: PUSH   DE
            LD     A,C
            OUT    (07CH),A
            LD     A,B
            AND    15
            LD     DE,(REPDECVOLU)
            ADD    A,E
            BIT    4,A
            JR     Z,WRTVOLFMB2
            LD     A,15
WRTVOLFMB2: LD     D,A
            LD     A,B
            AND    240
            OR     D
            POP    DE
            OUT    (07DH),A
            RET

WRTVOLUPSG: LD     A,C
            OUT    (0A0H),A
            LD     A,B
            LD     BC,(REPDECVOLU)
            SUB    C
            BIT    7,A
            JR     Z,WRTVOLUPS2
            XOR    A
WRTVOLUPS2: OUT    (0A1H),A
            RET

WRTPSG:     LD     A,C
            OUT    (0A0H),A
            LD     A,B
            OUT    (0A1H),A
            RET

WRTPSG2:    OUT    (0A0H),A
            PUSH   AF
            LD     A,B
            OUT    (0A1H),A
            POP    AF
            RET

WRTPSG3:    PUSH   AF
            LD     A,C
            OUT    (0A0H),A
            POP    AF
            OUT    (0A1H),A
            RET

READPSG:    OUT    (0A0H),A
            IN     A,(0A2H)
            RET

;----------------------------------------------------------------------------

;Een paar instrumenten

INSTR0DATA: DEFB   000H,000H,000H,000H,000H,000H,000H,000H ;-
            DEFB   0F0H,0F4H,005H,001H,0C2H,0B9H,018H,018H ;jarre 1
            DEFB   0F2H,0E1H,00FH,00AH,0CAH,080H,035H,075H ;organ 4
            DEFB   0E2H,063H,010H,01BH,0E5H,092H,000H,037H ;bcaliopea
            DEFB   040H,041H,009H,000H,082H,093H,0F8H,0F8H ;asynth chord
            DEFB   000H,060H,022H,027H,0F7H,0F2H,08AH,0FAH ;marimba 2
            DEFB   061H,062H,08FH,007H,0F5H,0F2H,02FH,0FEH ;synth 3
            DEFB   053H,043H,014H,005H,0F0H,0F0H,010H,01AH ;synth 4
            DEFB   060H,061H,08AH,020H,0F3H,0F1H,03AH,0FAH ;bass2
            DEFB   043H,040H,092H,007H,0F4H,0F2H,0AAH,0AAH ;bell2
            DEFB   062H,062H,03FH,007H,096H,076H,02AH,00AH ;flute2
            DEFB   060H,061H,01AH,007H,0F1H,071H,01AH,0DAH ;synth5
            DEFB   0E3H,061H,017H,007H,041H,0F0H,0FFH,0FFH ;swelbel
            DEFB   063H,062H,015H,00FH,0F0H,0F3H,0FFH,0FFH ;synthbel
            DEFB   000H,014H,009H,007H,0FAH,0F6H,0A5H,0A5H ;tom3
            DEFB   064H,021H,010H,008H,0D3H,090H,024H,004H ;bell3
            DEFB   024H,022H,08DH,008H,086H,0D0H,034H,004H ;flute4
            DEFB   008H,014H,0C3H,007H,0A2H,0F6H,033H,068H ;plok
            DEFB   061H,024H,00FH,000H,084H,082H,007H,095H ;synth7
            DEFB   072H,072H,018H,007H,095H,0C0H,028H,026H ;lead1
            DEFB   051H,061H,017H,007H,050H,0F1H,05CH,0DCH ;lead2
            DEFB   030H,010H,00FH,004H,0D9H,0B2H,010H,0F3H ;Piano 2
            DEFB   003H,009H,011H,006H,0D2H,0B4H,0F4H,0F5H ;Clavicode 1
            DEFB   001H,001H,011H,006H,0C0H,0B4H,001H,0F6H ;Harpsicode 2
            DEFB   001H,003H,00BH,007H,0BAH,0D9H,025H,006H ;Synthesizer Percussion
            DEFB   062H,071H,025H,007H,064H,043H,012H,026H ;Flute 2
            DEFB   043H,053H,00EH,085H,0B5H,0E9H,084H,004H ;Koto 2
            DEFB   0F1H,031H,017H,005H,023H,040H,014H,009H ;Huwawa
            DEFB   020H,071H,00DH,006H,0C1H,0D5H,056H,006H ;Hardrock
            DEFB   072H,074H,009H,001H,0F1H,0F1H,072H,0A2H ;synth 3
            DEFB   002H,000H,00CH,00CH,0E3H,0E3H,0F3H,0F3H ;synth 4
            DEFB   0F1H,032H,00AH,001H,080H,081H,030H,042H ;synth lead
            DEFB   071H,031H,00AH,005H,0AFH,0C7H,014H,024H ;synth str2
            DEFB   040H,042H,00BH,000H,094H,0B0H,033H,0F6H ;new synth
            DEFB   0F0H,031H,00AH,001H,080H,081H,030H,045H ;acid piano
            DEFB   021H,024H,010H,016H,089H,09AH,01FH,00EH ;pipe organ
            DEFB   0F1H,032H,007H,001H,080H,081H,030H,049H ;funk organ
            DEFB   061H,061H,00DH,00AH,0F5H,0F4H,0F5H,0F5H ;electrons1
            DEFB   061H,061H,007H,010H,0F6H,0F5H,0F5H,0F5H ;electrons2
            DEFB   071H,071H,018H,002H,0F1H,041H,014H,016H ;violin
            DEFB   061H,061H,00EH,002H,081H,075H,0F5H,005H ;saxophone2
            DEFB   060H,060H,040H,002H,081H,075H,0F5H,005H ;saxophone3
            DEFB   072H,021H,0CFH,001H,0D2H,0F0H,0F3H,0C4H ;mg bells
            DEFB   060H,0E0H,010H,00FH,071H,0F4H,0B6H,0FAH ;am-fuzz 2
            DEFB   071H,031H,01CH,007H,051H,071H,024H,026H ;brass
            DEFB   070H,031H,012H,007H,051H,071H,024H,026H ;heavybrass
            DEFB   072H,072H,019H,000H,063H,08FH,015H,00EH ;trumpet 1
            DEFB   071H,071H,015H,000H,063H,08FH,015H,00EH ;trumpet 2
            DEFB   061H,078H,00DH,000H,085H,0F2H,014H,003H ;invasion
            DEFB   034H,030H,037H,006H,050H,030H,076H,006H ;Pipe Organ
            DEFB   017H,052H,018H,005H,088H,0D9H,066H,024H ;Xylophone
            DEFB   019H,053H,00CH,006H,0C7H,0F5H,011H,003H ;Santool 1
            DEFB   013H,011H,00CH,006H,0FCH,0D2H,033H,083H ;Koto 1
            DEFB   001H,010H,00EH,007H,0CAH,0E6H,044H,024H ;Taiko
            DEFB   013H,011H,011H,007H,0FAH,0F2H,021H,0F4H ;Synthesizer bell
            DEFB   0A6H,042H,010H,005H,0FBH,0B9H,011H,002H ;Chime
            DEFB   040H,000H,000H,007H,0FAH,0D9H,037H,004H ;Synthesizer Rhythm
            DEFB   011H,011H,008H,004H,0FAH,0B2H,020H,0F4H ;Piano 3
            DEFB   019H,053H,015H,007H,0E7H,095H,021H,003H ;Santool 2
            DEFB   030H,070H,019H,007H,042H,062H,026H,024H ;Brass
            DEFB   021H,003H,00BH,005H,090H,0D4H,002H,0F5H ;Clavicode 2
            DEFB   001H,003H,00AH,005H,090H,0A4H,003H,0F5H ;Clavicode 3
            DEFB   034H,030H,026H,006H,050H,030H,076H,006H ;Pipe Organ 2
            DEFB   073H,033H,05AH,006H,099H,0F5H,014H,015H ;PohdsPLA
            DEFB   073H,013H,016H,005H,0F9H,0F5H,033H,003H ;RohdsPLA
            DEFB   061H,021H,015H,007H,076H,054H,023H,006H ;Orch L
            DEFB   063H,070H,01BH,007H,075H,04BH,045H,015H ;Orch R
            DEFB   061H,0A1H,00AH,005H,076H,054H,012H,007H ;Synthesizer violin
            DEFB   061H,078H,00DH,005H,085H,0F2H,014H,003H ;Synthesizer Organ
            DEFB   031H,071H,015H,007H,0B6H,0F9H,003H,026H ;Synthesizer Brass
            DEFB   003H,00CH,014H,006H,0A7H,0FCH,013H,015H ;Shamisen
            DEFB   013H,032H,080H,003H,020H,085H,003H,0AFH ;Magical
            DEFB   0F0H,074H,017H,047H,05AH,043H,006H,0FCH ;Wander Flat
            DEFB   030H,032H,006H,006H,040H,040H,004H,074H ;Machine
            DEFB   030H,032H,003H,003H,040H,040H,004H,074H ;Machine V
            DEFB   060H,020H,011H,083H,0F3H,0F3H,024H,035H ;synth 1
            DEFB   060H,022H,00DH,083H,0F3H,0F3H,024H,035H ;synth 2
            DEFB   061H,061H,020H,040H,021H,031H,022H,002H ;synthsweep
            DEFB   010H,0C0H,041H,083H,0F9H,011H,020H,0D4H ;synth sf1
            DEFB   010H,0C0H,046H,083H,0F9H,011H,020H,0D4H ;synth sf2
            DEFB   011H,0C1H,04DH,083H,0F9H,011H,020H,0D4H ;synth sf3
            DEFB   060H,021H,009H,083H,0F3H,0F3H,024H,034H ;heavysynth
            DEFB   070H,020H,08EH,083H,0A3H,0B2H,003H,0C8H ;lead-synth
            DEFB   061H,061H,022H,009H,094H,054H,014H,006H ;synth str1
            DEFB   0F1H,0F2H,015H,081H,072H,0F1H,024H,074H ;smad synth
            DEFB   040H,040H,08AH,000H,074H,0E1H,0F6H,0F6H ;wow synth
            DEFB   060H,020H,01AH,083H,0F3H,0F3H,024H,037H ;synthpiano
            DEFB   021H,022H,052H,040H,0E1H,0D3H,0F4H,0F6H ;piano 1
            DEFB   001H,001H,012H,012H,0E3H,0E3H,0F3H,0F6H ;piano 2
            DEFB   030H,000H,041H,006H,0F1H,0F1H,0A0H,0F7H ;piano 3
            DEFB   033H,031H,0D0H,00AH,091H,091H,082H,085H ;elecpiano1
            DEFB   016H,010H,071H,000H,0F6H,0F1H,025H,0E5H ;elecpiano2
            DEFB   013H,011H,011H,000H,0FAH,0F2H,021H,0F4H ;elecpiano3
            DEFB   000H,000H,012H,00CH,0E3H,0E3H,0F3H,0F6H ;elecpiano4
            DEFB   030H,000H,041H,000H,0F1H,0F1H,0A0H,0F7H ;spacepiano
            DEFB   030H,011H,00EH,004H,0D9H,0B2H,011H,0F4H ;dx7 piano1
            DEFB   027H,02CH,005H,004H,0FBH,0F4H,051H,0F4H ;toy piano
            DEFB   0A2H,035H,010H,040H,0CEH,096H,027H,037H ;organ
            DEFB   0F0H,0F1H,012H,000H,0F8H,0FFH,03FH,00FH ;elecorgan1
            DEFB   0F0H,0F2H,007H,003H,0F8H,0F8H,018H,018H ;elecorgan2
            DEFB   0F0H,0F2H,010H,014H,0F8H,0F8H,018H,018H ;elecorgan3
            DEFB   073H,0E0H,057H,081H,086H,0C2H,066H,096H ;porgan 1
            DEFB   073H,0E2H,04DH,081H,086H,0C2H,066H,096H ;porgan 2
            DEFB   070H,061H,008H,085H,0B9H,0F9H,026H,006H ;sf-organ
            DEFB   020H,001H,00FH,007H,0F5H,0F5H,0F5H,0F5H ;synthbass1
            DEFB   000H,000H,046H,002H,0E5H,0F5H,0F4H,0F7H ;synthbass2
            DEFB   070H,000H,095H,000H,098H,0D4H,065H,056H ;slap bass1
            DEFB   060H,030H,015H,000H,0F3H,0F3H,0BBH,0ECH ;slap bass2
            DEFB   040H,060H,054H,000H,0F6H,0F2H,074H,059H ;slap bass3
            DEFB   030H,030H,017H,000H,0D3H,0E1H,0BBH,0EBH ;elec bass
            DEFB   000H,040H,012H,000H,094H,0F2H,0F9H,0E8H ;elec bass2
            DEFB   060H,030H,094H,000H,0E4H,0C1H,01BH,0EBH ;rasp bass
            DEFB   030H,020H,019H,083H,0F2H,0F2H,010H,056H ;bass 1
            DEFB   020H,0E1H,0D1H,001H,086H,088H,037H,017H ;bass 2
            DEFB   030H,031H,00FH,000H,0F2H,0F4H,023H,099H ;short bass
            DEFB   020H,000H,00AH,007H,0F5H,0F5H,0F5H,0FAH ;cool-bass
            DEFB   030H,0A0H,00EH,080H,0AFH,0F4H,006H,01AH ;baseline
            DEFB   060H,021H,00EH,083H,0F3H,0F3H,024H,036H ;house-base
            DEFB   061H,061H,01BH,009H,094H,054H,014H,006H ;strings 1
            DEFB   061H,0B2H,00FH,041H,06DH,04CH,030H,006H ;strings 2
            DEFB   070H,0F0H,016H,003H,073H,03FH,002H,006H ;heavy str
            DEFB   061H,061H,01BH,009H,0C5H,096H,0F5H,0F6H ;plucked 1
            DEFB   061H,061H,018H,001H,0C5H,096H,0F5H,0F6H ;plucked 2
            DEFB   061H,061H,01FH,001H,0C5H,096H,0F5H,0F6H ;plucked 3
            DEFB   070H,0B0H,087H,008H,06FH,052H,003H,025H ;saxophone1
            DEFB   072H,031H,097H,005H,051H,06FH,075H,009H ;clarinet
            DEFB   061H,071H,026H,006H,061H,050H,075H,0F6H ;flute 1
            DEFB   024H,022H,024H,000H,0A8H,09FH,017H,007H ;flute 2
            DEFB   022H,060H,01BH,081H,062H,0CCH,0E5H,015H ;bleusflute
            DEFB   022H,0E1H,015H,080H,0A4H,062H,0B3H,094H ;synthflute
            DEFB   062H,072H,026H,006H,061H,050H,075H,0F6H ;piccolo
            DEFB   071H,076H,093H,00AH,040H,04FH,0F4H,007H ;oboe
            DEFB   070H,073H,097H,005H,050H,051H,086H,08AH ;bassoon
            DEFB   071H,0F4H,01BH,003H,073H,03FH,002H,006H ;harmonica
            DEFB   031H,024H,007H,007H,0A6H,080H,00FH,01EH ;bagpipes 1
            DEFB   030H,024H,007H,007H,0A6H,080H,00FH,01CH ;bagpipes 2
            DEFB   03EH,032H,057H,000H,0F5H,0F4H,074H,0F3H ;glockspl 1
            DEFB   03EH,0E1H,041H,0C0H,0CDH,09EH,013H,003H ;glockspl 2
            DEFB   06BH,063H,01AH,00AH,0C5H,096H,0F5H,0F4H ;spaceglock
            DEFB   032H,030H,094H,00CH,0F1H,0F1H,021H,031H ;bell 1
            DEFB   064H,0ECH,0C8H,0C4H,08BH,0C5H,016H,026H ;bell 2
            DEFB   0B5H,0B1H,015H,081H,096H,0D8H,063H,022H ;bell 3
            DEFB   027H,02CH,006H,000H,0FBH,0F4H,051H,0F4H ;hand bell
            DEFB   0A5H,0C1H,004H,000H,067H,061H,0B8H,0A5H ;spacebell1
            DEFB   00BH,004H,009H,000H,0F0H,0F5H,001H,027H ;spacebell2
            DEFB   0B3H,0B1H,016H,000H,0F3H,0F2H,0A8H,0E9H ;bluesguitr
            DEFB   0B3H,0B1H,052H,000H,0F3H,0F2H,0A8H,0E9H ;spaniguitr
            DEFB   0F3H,0F1H,0A0H,002H,0B3H,0D2H,0A6H,0E6H ;esp guitar
            DEFB   031H,012H,010H,000H,0F0H,0F1H,067H,095H ;fuzz guitr
            DEFB   013H,010H,018H,000H,0F7H,0F3H,056H,085H ;marimba 1
            DEFB   040H,000H,000H,000H,0FAH,0D9H,037H,004H ;marimba 2
            DEFB   012H,011H,018H,000H,0F7H,0F3H,056H,08CH ;marimba 3
            DEFB   014H,011H,023H,000H,0F7H,0F3H,056H,08CH ;marimba 4
            DEFB   072H,071H,08FH,081H,0B6H,0B2H,043H,0B7H ;marimba 5
            DEFB   038H,032H,008H,003H,0F9H,0F4H,0F6H,0F5H ;xylophone1
            DEFB   017H,052H,018H,000H,088H,0D9H,066H,024H ;xylophone2
            DEFB   0F9H,0F1H,0DBH,000H,0F5H,0F3H,074H,0F2H ;vibraphn 1
            DEFB   0F3H,0F1H,0DBH,000H,0F5H,0F3H,074H,0F7H ;vibraphn 2
            DEFB   071H,071H,019H,003H,032H,044H,035H,02AH ;wah brass
            DEFB   051H,072H,094H,008H,041H,062H,024H,002H ;bell brass
            DEFB   020H,060H,094H,047H,0E3H,0D2H,0D5H,0C5H ;wave-synth
            DEFB   030H,030H,009H,0C4H,082H,06BH,032H,002H ;new-wave 1
            DEFB   070H,070H,020H,000H,041H,06FH,015H,00EH ;trombone
            DEFB   070H,030H,04DH,005H,042H,06FH,025H,006H ;horn
            DEFB   070H,070H,014H,000H,042H,04FH,063H,007H ;tuba 1
            DEFB   031H,071H,016H,000H,051H,052H,026H,024H ;tuba 2
            DEFB   073H,0B1H,04DH,005H,0E4H,0F4H,084H,094H ;koto
            DEFB   031H,036H,00DH,000H,0F2H,0F4H,023H,099H ;banjo
            DEFB   032H,0B1H,029H,000H,0F4H,0D2H,034H,0F3H ;harp
            DEFB   071H,075H,006H,007H,0F1H,0F1H,072H,0A2H ;sitar
            DEFB   0F0H,031H,082H,000H,0F1H,0E1H,055H,054H ;meaty job
            DEFB   0C0H,048H,00DH,000H,0F9H,030H,010H,0F2H ;way out
            DEFB   000H,068H,002H,005H,0E5H,0D4H,0B5H,094H ;nice sound
            DEFB   060H,076H,009H,004H,012H,021H,072H,021H ;alien 1
            DEFB   060H,072H,00DH,004H,012H,021H,072H,021H ;alien 2
            DEFB   0FFH,070H,019H,000H,050H,01FH,005H,001H ;alien 3
            DEFB   06CH,07FH,009H,004H,012H,021H,072H,021H ;alien 4
            DEFB   0A2H,071H,081H,041H,099H,067H,035H,035H ;strange 1
            DEFB   0A3H,075H,087H,041H,099H,067H,035H,035H ;strange 2
            DEFB   0A3H,071H,082H,041H,099H,067H,035H,033H ;strange 3
            DEFB   051H,042H,010H,000H,003H,010H,042H,001H ;se-star
            DEFB   0B1H,0E2H,043H,0C1H,0C5H,0D8H,056H,026H ;terminator
            DEFB   0A0H,061H,04BH,0C1H,0A4H,078H,0B0H,014H ;cosmic
            DEFB   000H,001H,007H,000H,0CBH,0E3H,036H,025H ;xenon
            DEFB   032H,0A1H,016H,001H,0C0H,0C0H,020H,017H ;msx-psg
            DEFB   052H,041H,02CH,006H,045H,099H,0FAH,0FAH ;bell perc
            DEFB   019H,053H,00CH,000H,0C7H,0F5H,011H,003H ;sichor
            DEFB   033H,011H,00CH,000H,0F1H,0F3H,058H,0C9H ;harpsichor
            DEFB   02DH,022H,019H,000H,0C6H,0C6H,0F6H,0F5H ;celesta
            DEFB   071H,074H,010H,004H,0FFH,05FH,002H,007H ;accordion
            DEFB   002H,063H,006H,002H,0E5H,0D4H,0B7H,097H ;lo ho 1
            DEFB   000H,061H,006H,002H,0E5H,0D4H,0B7H,097H ;lo ho 2
            DEFB   073H,0E4H,008H,043H,04FH,096H,015H,035H ;flipflap
            DEFB   061H,061H,012H,000H,0B4H,056H,014H,017H ;pluto


; Dat zijn me even een instrumenten, zeg! (plus/minus 200 stuks)

;----------------------------------------------------------------------------

EINDE:      NOP

